package pe.gob.mininter.dirandro.vaadin.panel.parte;

import java.util.List;

import pe.gob.mininter.dirandro.model.Empresa;
import pe.gob.mininter.dirandro.model.Expediente;
import pe.gob.mininter.dirandro.model.Explosivo;
import pe.gob.mininter.dirandro.model.ModeloMarca;
import pe.gob.mininter.dirandro.model.Persona;
import pe.gob.mininter.dirandro.model.Valor;
import pe.gob.mininter.dirandro.service.EmpresaService;
import pe.gob.mininter.dirandro.service.ExplosivoService;
import pe.gob.mininter.dirandro.service.ModeloMarcaService;
import pe.gob.mininter.dirandro.service.PersonaService;
import pe.gob.mininter.dirandro.util.BeanValidar;
import pe.gob.mininter.dirandro.util.Constante;
import pe.gob.mininter.dirandro.util.HarecUtil;
import pe.gob.mininter.dirandro.vaadin.dialogs.AlertDialog;
import pe.gob.mininter.dirandro.vaadin.util.ComboBoxLOVS;
import pe.gob.mininter.dirandro.vaadin.util.Injector;

import com.vaadin.annotations.AutoGenerated;
import com.vaadin.data.Item;
import com.vaadin.data.Property;
import com.vaadin.data.Property.ValueChangeEvent;
import com.vaadin.data.Property.ValueChangeListener;
import com.vaadin.data.util.BeanItemContainer;
import com.vaadin.data.util.IndexedContainer;
import com.vaadin.ui.Alignment;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Button.ClickListener;
import com.vaadin.ui.ComboBox;
import com.vaadin.ui.CustomComponent;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.OptionGroup;
import com.vaadin.ui.Table;
import com.vaadin.ui.TextArea;
import com.vaadin.ui.TextField;
import com.vaadin.ui.VerticalLayout;

public class PanelRegistroParteExplosivo extends CustomComponent implements ClickListener {

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
	
	@AutoGenerated
	private VerticalLayout mainLayout;
	@AutoGenerated
	private VerticalLayout pnlExplosivos;
	@AutoGenerated
	private VerticalLayout pnlExplosivosBody;
	@AutoGenerated
	private Table tblExpLista;
	@AutoGenerated
	private HorizontalLayout pnlExplosivosBody6;
	@AutoGenerated
	private Button btnExpRegistrar;
	@AutoGenerated
	private HorizontalLayout pnlExplosivosBody5;
	@AutoGenerated
	private TextArea txtExpObservacion;
	@AutoGenerated
	private HorizontalLayout pnlExplosivosBody4;
	@AutoGenerated
	private TextField txtCantidad;
	@AutoGenerated
	private TextField txtExpMedida;
	@AutoGenerated
	private ComboBox cmbExpTipoMedida;
	@AutoGenerated
	private HorizontalLayout pnlExplosivosBody2;
	@AutoGenerated
	private ComboBoxLOVS cmbExpSituacion;
	@AutoGenerated
	private ComboBoxLOVS cmbExpEstado;
	@AutoGenerated
	private ComboBox cbbExpPropietario;
	@AutoGenerated
	private OptionGroup rbTipoPropietario;
	@AutoGenerated
	private HorizontalLayout horizontalLayout_1;
	@AutoGenerated
	private TextField txtDescripcion2;
	@AutoGenerated
	private HorizontalLayout pnlExplosivosBody1;
	@AutoGenerated
	private TextField txtExpSerie;
	@AutoGenerated
	private ComboBox cmbSubTipoExplosivo;
	@AutoGenerated
	private ComboBox cmbTipoExplosivo;
	/**
	 * The constructor should first build the main layout, set the
	 * composition root and then do any custom initialization.
	 *
	 * The constructor will not be automatically regenerated by the
	 * visual editor.
	 */

	private static final long serialVersionUID = -4639683924066371051L;
	
	private ModeloMarcaService modeloMarcaService;
	private PersonaService personaService;
	private EmpresaService empresaService;
	private ExplosivoService explosivoService;
	
	private List<ModeloMarca> lstTiposExplosivos;
	private List<ModeloMarca> lstTiposMedidas;
	private List<ModeloMarca> lstMarcas;
	private List<Empresa> lstEmpresas;
	private List<Persona> lstPersonas;
	private String listaSeleccionada="persona";
	
	private Expediente expediente;
	private Explosivo explosivo;
	private boolean inicializado=false;
	
	public void setExpediente(Expediente expediente) {
		this.expediente = expediente;
		postConstruct();
	}
	
	public PanelRegistroParteExplosivo( ) {
		buildMainLayout();
		modeloMarcaService = Injector.obtenerServicio(ModeloMarcaService.class);
		personaService = Injector.obtenerServicio(PersonaService.class);
		empresaService = Injector.obtenerServicio(EmpresaService.class);
		explosivoService = Injector.obtenerServicio(ExplosivoService.class);
		setCompositionRoot(mainLayout);
		setExpediente(new Expediente());
		postConstruct();
		//TODO compeltar data para municiones en tabla marca modelo y corregir las constantes 
	}
	
	
	public void postConstruct() {
		if(expediente!=null && !expediente.esNuevo() && !inicializado){
			cmbExpEstado.setInputPrompt("Estado");
			cmbExpEstado.setRequired(true);
			cmbExpEstado.setCodigoLista(Constante.LISTA.CODIGO.ESTADO);
			cmbExpEstado.attach();
			
			cmbExpSituacion.setInputPrompt("Situacion");
			cmbExpSituacion.setRequired(true);
			cmbExpSituacion.setCodigoLista(Constante.LISTA.CODIGO.SITUACION_GENERAL);
			cmbExpSituacion.attach();
			
			cmbTipoExplosivo.setInputPrompt("Tipo Explosivo");
			cmbTipoExplosivo.setItemCaptionPropertyId("nombre");
			lstTiposExplosivos = modeloMarcaService.buscarHijos(new ModeloMarca(Constante.MODELO_MARCA.EXPLOSIVOS.TIPOS));
			cmbTipoExplosivo.setContainerDataSource(new BeanItemContainer<ModeloMarca>(ModeloMarca.class,  lstTiposExplosivos));
			cmbTipoExplosivo.setImmediate(true);
			cmbTipoExplosivo.addListener(new Property.ValueChangeListener() {            
				private static final long serialVersionUID = 1L;
				@Override
	            public void valueChange(ValueChangeEvent event) {				 
					lstMarcas = modeloMarcaService.buscarHijos((ModeloMarca)cmbTipoExplosivo.getValue());
					cmbSubTipoExplosivo.setContainerDataSource(new BeanItemContainer<ModeloMarca>(ModeloMarca.class,lstMarcas));
	            }
	        });
			
			//marca
			cmbSubTipoExplosivo.setInputPrompt("Marcas");
			cmbSubTipoExplosivo.setItemCaptionPropertyId("nombre");
					
			cmbExpTipoMedida.setInputPrompt("Tipo Medida");
			cmbExpTipoMedida.setItemCaptionPropertyId("nombre");
			lstTiposMedidas = modeloMarcaService.buscarHijos(new ModeloMarca(Constante.MODELO_MARCA.EXPLOSIVOS.PRESENTACIONES));
			cmbExpTipoMedida.setContainerDataSource(new BeanItemContainer<ModeloMarca>(ModeloMarca.class,  lstTiposMedidas));
			
			rbTipoPropietario.addItem("Persona");
			rbTipoPropietario.addItem("Empresa");
			rbTipoPropietario.select("Persona");
			rbTipoPropietario.setImmediate(true);
			rbTipoPropietario.addListener(new ValueChangeListener() {
				private static final long serialVersionUID = 2720977948538256976L;
				@Override
				public void valueChange(ValueChangeEvent event) {
					rbTipoPersonaValueChange(event);
				}
			});
			
			cbbExpPropietario.setInputPrompt("Incautado a:");
			cbbExpPropietario.setItemCaptionPropertyId("nombreCompleto");
			cbbExpPropietario.setImmediate(true);
			cargaComboPersonaIncautada("persona");
			
	
			tblExpLista.setSelectable(true);
			tblExpLista.setImmediate(true);
			tblExpLista.setNullSelectionAllowed(true);
			tblExpLista.setNullSelectionItemId(null);
			tblExpLista.addListener(new ValueChangeListener() {
				
				private static final long serialVersionUID = 7962790507398071986L;
	
				@Override
				public void valueChange(ValueChangeEvent event) {
					boolean esModoNuevo = tblExpLista.getValue() == null;
					limpiar();
					if(esModoNuevo){
						tblExpLista.setValue(null);
						habilitarEdicion(false);
					}else{
						habilitarEdicion(true);
						Item item = tblExpLista.getItem(tblExpLista.getValue());
					
						explosivo.setId((Long) item.getItemProperty("id").getValue());					
						txtDescripcion2.setValue(item.getItemProperty("descripcion").getValue());
						txtExpObservacion.setValue(item.getItemProperty("observacion").getValue());
						txtExpMedida.setValue(item.getItemProperty("medida").getValue());
						txtCantidad.setValue(item.getItemProperty("cantidad").getValue());
						txtExpSerie.setValue(item.getItemProperty("serie").getValue());
						cmbExpEstado.select(new Valor((Long)item.getItemProperty("estado.id").getValue()));
						cmbExpSituacion.select(new Valor((Long)item.getItemProperty("situacion.id").getValue()));
						
						cmbTipoExplosivo.select(new ModeloMarca((Long)item.getItemProperty("tipo.id").getValue()));
						cmbSubTipoExplosivo.select(new ModeloMarca((Long)item.getItemProperty("marca.id").getValue()));
						cmbExpTipoMedida.select(new ModeloMarca((Long)item.getItemProperty("tipoMedida.id").getValue()));
						if(item.getItemProperty("persona.id").getValue()!=null){
							listaSeleccionada="persona";
							rbTipoPropietario.select("Persona");
							cbbExpPropietario.select(new Persona((Long)item.getItemProperty("persona.id").getValue()));
						}else{
							listaSeleccionada="empresa";
							rbTipoPropietario.select("Empresa");
							if(lstEmpresas==null){
								lstEmpresas = empresaService.listarEmpresas();
							}
							cbbExpPropietario.select(new Empresa((Long)item.getItemProperty("empresa.id").getValue()));
						}
					}
				}
			});	
					
			btnExpRegistrar.addListener((ClickListener)this);
			
			refrescar();
			inicializado=true;
		}
	}

	private void rbTipoPersonaValueChange(ValueChangeEvent event){		
		boolean opcion = event.getProperty().getValue().equals("Persona");
		cbbExpPropietario.select(null);
		if(opcion){
			cargaComboPersonaIncautada("persona");
		}else{
			cargaComboPersonaIncautada("empresa");
		}
	}
	
	private void cargaComboPersonaIncautada(String opcion){
		if(opcion.equals("persona")){
			listaSeleccionada="persona";
			if(lstPersonas ==null)
				lstPersonas = personaService.buscar( null );
			cbbExpPropietario.setItemCaptionPropertyId("nombreCompleto");
			cbbExpPropietario.setContainerDataSource(new BeanItemContainer<Persona>(Persona.class,  lstPersonas));
		}else{
			listaSeleccionada="empresa";
			cbbExpPropietario.setItemCaptionPropertyId("razonSocial");
			if(lstEmpresas==null)
				lstEmpresas = empresaService.buscar( null );
			cbbExpPropietario.setContainerDataSource(new BeanItemContainer<Empresa>(Empresa.class,  lstEmpresas));
		}
	}

	private void cargarTablaInmuebles( ){
		IndexedContainer container = new IndexedContainer();
		container.addContainerProperty("id", Long.class,  null);
		container.addContainerProperty("persona.id", Long.class, null);
		container.addContainerProperty("persona.nombre", String.class, null);
		container.addContainerProperty("empresa.id", Long.class, null);
		container.addContainerProperty("empresa.nombre", String.class, null);
		container.addContainerProperty("tipo.id", Long.class, null);
		container.addContainerProperty("tipo.nombre", String.class, null);
		container.addContainerProperty("marca.id", Long.class, null);
		container.addContainerProperty("marca.nombre", String.class, null);
		container.addContainerProperty("tipoMedida.id", Long.class, null);
		container.addContainerProperty("tipoMedida.nombre", String.class, null);
		container.addContainerProperty("situacion.id", Long.class, null);
		container.addContainerProperty("situacion.nombre", String.class, null);
		container.addContainerProperty("medida", String.class, null);
		container.addContainerProperty("cantidad", String.class, null);
		container.addContainerProperty("estado.id", Long.class, null);
		container.addContainerProperty("estado.nombre", String.class, null);
		container.addContainerProperty("descripcion", String.class, null);
		container.addContainerProperty("observacion", String.class, null);
		container.addContainerProperty("serie", String.class, null);
		
		tblExpLista.setContainerDataSource(container);
		tblExpLista.setVisibleColumns(new Object[]{"persona.nombre", "empresa.nombre", "tipo.nombre","marca.nombre"});

		tblExpLista.setColumnHeader("persona.nombre", "Persona");
		tblExpLista.setColumnHeader("empresa.nombre", "Empresa");
		tblExpLista.setColumnHeader("tipo.nombre", "Tipo");
		tblExpLista.setColumnHeader("marca.nombre", "Marca");
		
		Explosivo tmpExplosivo = new Explosivo();
		tmpExplosivo.setExpediente(expediente);
		List<Explosivo> lstinmuebles = explosivoService.buscar(tmpExplosivo);
		int con=1;
		for (Explosivo explosivo : lstinmuebles){
			Item item = container.addItem(con++);
			item.getItemProperty("id").setValue(explosivo.getId());
			item.getItemProperty("persona.id").setValue(explosivo.getPersonaImplicada()!=null?HarecUtil.nullToEmpty(explosivo.getPersonaImplicada().getId()):null);
			item.getItemProperty("persona.nombre").setValue(explosivo.getPersonaImplicada()!=null?HarecUtil.nullToEmpty(explosivo.getPersonaImplicada().getNombreCompleto()):null);
			item.getItemProperty("empresa.id").setValue(explosivo.getEmpresaImplicada()!=null?HarecUtil.nullToEmpty(explosivo.getEmpresaImplicada().getId()):null);
			item.getItemProperty("empresa.nombre").setValue(explosivo.getEmpresaImplicada()!=null?HarecUtil.nullToEmpty(explosivo.getEmpresaImplicada().getRazonSocial()):null);
			
			if(explosivo.getMarca()!=null){
				item.getItemProperty("tipo.id").setValue(HarecUtil.marcaModeloIdToEmpty(explosivo.getMarca().getPadre()));
				item.getItemProperty("tipo.nombre").setValue(HarecUtil.marcaModeloNombreToEmpty(explosivo.getMarca().getPadre()));
			}
			
			item.getItemProperty("marca.id").setValue(HarecUtil.marcaModeloIdToEmpty(explosivo.getMarca()));
			item.getItemProperty("marca.nombre").setValue(HarecUtil.marcaModeloNombreToEmpty(explosivo.getMarca()));
				
			item.getItemProperty("tipoMedida.id").setValue(HarecUtil.marcaModeloIdToEmpty(explosivo.getTipoMedida()));
			item.getItemProperty("tipoMedida.nombre").setValue(HarecUtil.marcaModeloNombreToEmpty(explosivo.getTipoMedida()));
			
			item.getItemProperty("situacion.id").setValue(HarecUtil.valorIdToEmpty(explosivo.getSituacion()));
			item.getItemProperty("situacion.nombre").setValue(HarecUtil.valorNombreToEmpty(explosivo.getSituacion()));
			item.getItemProperty("estado.id").setValue(HarecUtil.valorIdToEmpty(explosivo.getEstado()));
			item.getItemProperty("estado.nombre").setValue(HarecUtil.valorNombreToEmpty(explosivo.getEstado()));
			item.getItemProperty("medida").setValue(HarecUtil.nullToEmpty(explosivo.getMedida()));
			item.getItemProperty("cantidad").setValue(HarecUtil.nullToEmpty(explosivo.getCantidad()));
			item.getItemProperty("descripcion").setValue(HarecUtil.nullToEmpty(explosivo.getDescripcion()));
			item.getItemProperty("observacion").setValue(HarecUtil.nullToEmpty(explosivo.getObservacion()));
			item.getItemProperty("serie").setValue(HarecUtil.nullToEmpty(explosivo.getSerie()));
		}
	}
	
	public void refrescar(){
		habilitarEdicion(false);
		limpiar();
		cargarTablaInmuebles();
	}
	
	private void habilitarEdicion(boolean flag){
		if(flag){
			btnExpRegistrar.setCaption("Actualizar");
		}
		else{
			btnExpRegistrar.setCaption("Crear");
		}
	}

	public void limpiar(){
		explosivo = new Explosivo(0l);
		explosivo.setExpediente(expediente);
		
		txtCantidad.setValue("");
		txtDescripcion2.setValue("");
		txtExpMedida.setValue("");
		txtExpObservacion.setValue("");
		txtExpSerie.setValue("");
		
		cmbExpEstado.select(null);
		cmbSubTipoExplosivo.select(null);
		cbbExpPropietario.select(null);
		cmbTipoExplosivo.select(null);
		cmbExpTipoMedida.select(null);
		rbTipoPropietario.select("Persona");		
		cargaComboPersonaIncautada("persona");
	}
	
	@Override
	public void buttonClick(ClickEvent event) {
		
		if(	 event.getButton().equals(btnExpRegistrar) ){
			
			explosivo.setExpediente(expediente);			
			explosivo.setDescripcion(HarecUtil.nullToEmpty(txtDescripcion2.getValue()));
			explosivo.setObservacion(HarecUtil.nullToEmpty(txtExpObservacion.getValue()));
			explosivo.setSerie(HarecUtil.nullToEmpty(txtExpSerie.getValue()));
			explosivo.setMedida(!HarecUtil.nullToEmpty(txtExpMedida.getValue()).equals("") ? Double.valueOf((String)txtExpMedida.getValue()):null);
			explosivo.setCantidad(!HarecUtil.nullToEmpty(txtCantidad.getValue()).equals("") ? Integer.valueOf((String)txtCantidad.getValue()):null);
			explosivo.setMarca((ModeloMarca)cmbSubTipoExplosivo.getValue());
			if(listaSeleccionada.equals("persona")){
				explosivo.setPersonaImplicada((Persona)cbbExpPropietario.getValue());	
			}else{
				explosivo.setEmpresaImplicada((Empresa)cbbExpPropietario.getValue());	
			}
			explosivo.setEstado(cmbExpEstado.getValor());
			explosivo.setSituacion(cmbExpSituacion.getValor());
			explosivo.setTipoMedida((ModeloMarca)cmbExpTipoMedida.getValue());
			
			HarecUtil.validar(getWindow(), explosivo, new BeanValidar[]{
	        	new BeanValidar("marca", new Object[]{"Tipo / Sub Tipo de Explosivo"}, cmbSubTipoExplosivo),
	        	new BeanValidar("descripcion", new Object[]{"Descripción"}, txtDescripcion2),
	        	new BeanValidar("estado", new Object[]{"Estado"}, cmbExpEstado),
	        	new BeanValidar("situacion", new Object[]{"Situación"}, cmbExpSituacion)
	        });
			
			if(explosivo.getId()==0)
				explosivoService.crear(explosivo);
			else
				explosivoService.actualizar(explosivo);
			
			refrescar();
			AlertDialog alertDialog = new  AlertDialog("Registro de Explosivo", "Se ha registrado el explosivo correctamente", "Aceptar", "400");
			getApplication().getMainWindow().addWindow(alertDialog);
		}
	}

	@AutoGenerated
	private VerticalLayout buildMainLayout() {
		// common part: create layout
		mainLayout = new VerticalLayout();
		mainLayout.setImmediate(false);
		mainLayout.setWidth("-1px");
		mainLayout.setHeight("-1px");
		mainLayout.setMargin(false);
		
		// top-level component properties
		setWidth("-1px");
		setHeight("-1px");
		
		// pnlExplosivos
		pnlExplosivos = buildPnlExplosivos();
		mainLayout.addComponent(pnlExplosivos);
		
		return mainLayout;
	}

	@AutoGenerated
	private VerticalLayout buildPnlExplosivos() {
		// common part: create layout
		pnlExplosivos = new VerticalLayout();
		pnlExplosivos.setCaption("Explosivos");
		pnlExplosivos.setImmediate(false);
		pnlExplosivos.setWidth("-1px");
		pnlExplosivos.setHeight("-1px");
		pnlExplosivos.setMargin(false);
		
		// pnlExplosivosBody
		pnlExplosivosBody = buildPnlExplosivosBody();
		pnlExplosivos.addComponent(pnlExplosivosBody);
		
		return pnlExplosivos;
	}

	@AutoGenerated
	private VerticalLayout buildPnlExplosivosBody() {
		// common part: create layout
		pnlExplosivosBody = new VerticalLayout();
		pnlExplosivosBody.setImmediate(false);
		pnlExplosivosBody.setWidth("-1px");
		pnlExplosivosBody.setHeight("-1px");
		pnlExplosivosBody.setMargin(true);
		pnlExplosivosBody.setSpacing(true);
		
		// pnlExplosivosBody1
		pnlExplosivosBody1 = buildPnlExplosivosBody1();
		pnlExplosivosBody.addComponent(pnlExplosivosBody1);
		
		// horizontalLayout_1
		horizontalLayout_1 = buildHorizontalLayout_1();
		pnlExplosivosBody.addComponent(horizontalLayout_1);
		
		// pnlExplosivosBody2
		pnlExplosivosBody2 = buildPnlExplosivosBody2();
		pnlExplosivosBody.addComponent(pnlExplosivosBody2);
		
		// pnlExplosivosBody4
		pnlExplosivosBody4 = buildPnlExplosivosBody4();
		pnlExplosivosBody.addComponent(pnlExplosivosBody4);
		
		// pnlExplosivosBody5
		pnlExplosivosBody5 = buildPnlExplosivosBody5();
		pnlExplosivosBody.addComponent(pnlExplosivosBody5);
		
		// pnlExplosivosBody6
		pnlExplosivosBody6 = buildPnlExplosivosBody6();
		pnlExplosivosBody.addComponent(pnlExplosivosBody6);
		pnlExplosivosBody.setComponentAlignment(pnlExplosivosBody6,
				new Alignment(20));
		
		// tblExpLista
		tblExpLista = new Table();
		tblExpLista.setImmediate(false);
		tblExpLista.setWidth("870px");
		tblExpLista.setHeight("150px");
		pnlExplosivosBody.addComponent(tblExpLista);
		
		return pnlExplosivosBody;
	}

	@AutoGenerated
	private HorizontalLayout buildPnlExplosivosBody1() {
		// common part: create layout
		pnlExplosivosBody1 = new HorizontalLayout();
		pnlExplosivosBody1.setImmediate(false);
		pnlExplosivosBody1.setWidth("-1px");
		pnlExplosivosBody1.setHeight("-1px");
		pnlExplosivosBody1.setMargin(false);
		pnlExplosivosBody1.setSpacing(true);
		
		// cmbTipoExplosivo
		cmbTipoExplosivo = new ComboBox();
		cmbTipoExplosivo.setCaption("Tipo");
		cmbTipoExplosivo.setImmediate(false);
		cmbTipoExplosivo.setWidth("-1px");
		cmbTipoExplosivo.setHeight("-1px");
		cmbTipoExplosivo.setRequired(true);
		pnlExplosivosBody1.addComponent(cmbTipoExplosivo);
		
		// cmbSubTipoExplosivo
		cmbSubTipoExplosivo = new ComboBox();
		cmbSubTipoExplosivo.setCaption("SubTipo");
		cmbSubTipoExplosivo.setImmediate(false);
		cmbSubTipoExplosivo.setWidth("-1px");
		cmbSubTipoExplosivo.setHeight("-1px");
		pnlExplosivosBody1.addComponent(cmbSubTipoExplosivo);
		
		// txtExpSerie
		txtExpSerie = new TextField();
		txtExpSerie.setCaption("Serie");
		txtExpSerie.setImmediate(false);
		txtExpSerie.setWidth("155px");
		txtExpSerie.setHeight("-1px");
		txtExpSerie.setInputPrompt("Número de serie");
		pnlExplosivosBody1.addComponent(txtExpSerie);
		
		return pnlExplosivosBody1;
	}

	@AutoGenerated
	private HorizontalLayout buildHorizontalLayout_1() {
		// common part: create layout
		horizontalLayout_1 = new HorizontalLayout();
		horizontalLayout_1.setImmediate(false);
		horizontalLayout_1.setWidth("-1px");
		horizontalLayout_1.setHeight("-1px");
		horizontalLayout_1.setMargin(false);
		
		// txtDescripcion2
		txtDescripcion2 = new TextField();
		txtDescripcion2.setCaption("Descripcion");
		txtDescripcion2.setImmediate(false);
		txtDescripcion2.setWidth("870px");
		txtDescripcion2.setHeight("-1px");
		txtDescripcion2.setRequired(true);
		txtDescripcion2.setInputPrompt("Descripción");
		txtDescripcion2.setMaxLength(500);
		horizontalLayout_1.addComponent(txtDescripcion2);
		
		return horizontalLayout_1;
	}

	@AutoGenerated
	private HorizontalLayout buildPnlExplosivosBody2() {
		// common part: create layout
		pnlExplosivosBody2 = new HorizontalLayout();
		pnlExplosivosBody2.setImmediate(false);
		pnlExplosivosBody2.setWidth("-1px");
		pnlExplosivosBody2.setHeight("-1px");
		pnlExplosivosBody2.setMargin(false);
		pnlExplosivosBody2.setSpacing(true);
		
		// rbTipoPropietario
		rbTipoPropietario = new OptionGroup();
		rbTipoPropietario.setStyleName("horizontal");
		rbTipoPropietario.setCaption("Tipo de propietario");
		rbTipoPropietario.setImmediate(false);
		rbTipoPropietario.setWidth("-1px");
		rbTipoPropietario.setHeight("25px");
		pnlExplosivosBody2.addComponent(rbTipoPropietario);
		
		// cbbExpPropietario
		cbbExpPropietario = new ComboBox();
		cbbExpPropietario.setCaption("Propietario");
		cbbExpPropietario.setImmediate(false);
		cbbExpPropietario.setWidth("300px");
		cbbExpPropietario.setHeight("-1px");
		pnlExplosivosBody2.addComponent(cbbExpPropietario);
		
		// cmbExpEstado
		cmbExpEstado = new ComboBoxLOVS();
		cmbExpEstado.setCaption("Estado");
		cmbExpEstado.setImmediate(false);
		cmbExpEstado.setWidth("200px");
		cmbExpEstado.setHeight("-1px");
		pnlExplosivosBody2.addComponent(cmbExpEstado);
		
		// cmbExpSituacion
		cmbExpSituacion = new ComboBoxLOVS();
		cmbExpSituacion.setCaption("Situacion");
		cmbExpSituacion.setImmediate(false);
		cmbExpSituacion.setWidth("200px");
		cmbExpSituacion.setHeight("-1px");
		pnlExplosivosBody2.addComponent(cmbExpSituacion);
		
		return pnlExplosivosBody2;
	}

	@AutoGenerated
	private HorizontalLayout buildPnlExplosivosBody4() {
		// common part: create layout
		pnlExplosivosBody4 = new HorizontalLayout();
		pnlExplosivosBody4.setImmediate(false);
		pnlExplosivosBody4.setWidth("-1px");
		pnlExplosivosBody4.setHeight("-1px");
		pnlExplosivosBody4.setMargin(false);
		pnlExplosivosBody4.setSpacing(true);
		
		// cmbExpTipoMedida
		cmbExpTipoMedida = new ComboBox();
		cmbExpTipoMedida.setCaption("Tipo de Medida");
		cmbExpTipoMedida.setImmediate(false);
		cmbExpTipoMedida.setWidth("270px");
		cmbExpTipoMedida.setHeight("-1px");
		pnlExplosivosBody4.addComponent(cmbExpTipoMedida);
		
		// txtExpMedida
		txtExpMedida = new TextField();
		txtExpMedida.setCaption("Medida");
		txtExpMedida.setImmediate(false);
		txtExpMedida.setWidth("270px");
		txtExpMedida.setHeight("-1px");
		txtExpMedida.setInputPrompt("Unidad de medida");
		pnlExplosivosBody4.addComponent(txtExpMedida);
		
		// txtCantidad
		txtCantidad = new TextField();
		txtCantidad.setCaption("Cantidad");
		txtCantidad.setImmediate(false);
		txtCantidad.setWidth("270px");
		txtCantidad.setHeight("-1px");
		txtCantidad.setInputPrompt("Cantidad");
		txtCantidad.setMaxLength(7);
		pnlExplosivosBody4.addComponent(txtCantidad);
		
		return pnlExplosivosBody4;
	}

	@AutoGenerated
	private HorizontalLayout buildPnlExplosivosBody5() {
		// common part: create layout
		pnlExplosivosBody5 = new HorizontalLayout();
		pnlExplosivosBody5.setImmediate(false);
		pnlExplosivosBody5.setWidth("-1px");
		pnlExplosivosBody5.setHeight("-1px");
		pnlExplosivosBody5.setMargin(false);
		
		// txtExpObservacion
		txtExpObservacion = new TextArea();
		txtExpObservacion.setCaption("Observación");
		txtExpObservacion.setImmediate(false);
		txtExpObservacion.setWidth("870px");
		txtExpObservacion.setHeight("100px");
		txtExpObservacion.setInputPrompt("Observaciones");
		txtExpObservacion.setMaxLength(500);
		pnlExplosivosBody5.addComponent(txtExpObservacion);
		
		return pnlExplosivosBody5;
	}

	@AutoGenerated
	private HorizontalLayout buildPnlExplosivosBody6() {
		// common part: create layout
		pnlExplosivosBody6 = new HorizontalLayout();
		pnlExplosivosBody6.setImmediate(false);
		pnlExplosivosBody6.setWidth("-1px");
		pnlExplosivosBody6.setHeight("-1px");
		pnlExplosivosBody6.setMargin(false);
		
		// btnExpRegistrar
		btnExpRegistrar = new Button();
		btnExpRegistrar.setCaption("Registrar");
		btnExpRegistrar.setImmediate(true);
		btnExpRegistrar.setWidth("-1px");
		btnExpRegistrar.setHeight("-1px");
		pnlExplosivosBody6.addComponent(btnExpRegistrar);
		
		return pnlExplosivosBody6;
	}

}
